#include <stdlib.h> double strtod(nptr, endptr); преобразует строку, на которую указывает nptr, в double char *nptr; указатель на строку char **endptr; указатель на конец просмотра long strol(nptr,endptr,base); преобразует строку в long десятичное це- лое, эквивалентное числу с данным осно- ванием base char *nptr; char **endptr; int base; используемое основа- ние
Описание.
Функции strtod и strtol соответственно преобразуют символьную строку к значению с двойной точностью или к длинному целому значению. Исходная строка string представляет собой последовательность символов, которые интерпретируются как числовое значение специального типа. Эти функции прекращают чтение строки как только встретится символ, который не может быть частью числа (это может быть нулевой символ '\0 в конце строки); для strtol символом прерывания может быть также первый цифровой символ, который больше или равен base . Если endptr не NULL , *endptr указывает на тот символ, на котором останавливается просмотр.
Функция strtod предполагает, что nptr указывает на строку, имеющую следующую форму:
[whitespace][sign][digiits][.digits][{d:D:e:E}[sign]digits]
При появлении первого символа, не отвечающего этой форме, обработка прекращается.
Функция strtol предполагает, что nptr указывает на строку следующей структуры:
[whitespace][sign][0][x][digits]
Если base лежит между 2 и 36, это значение используется как основание системы счисления данного числа.
Если base = 0, начальные символы строки, на которые указывает nptr , используются для определения основания. Если первый символ 0 и второй одна из цифр от 1 до 7, то строка интерпретируется как восьмеричное целое; если первый символ 0, а второй x или X, тогда строка понимается как шестнадцатеричное целое; если первый символ принадлежит последовательности 1-9, то строка понимается как десятичное целое.
Возвращаемое значение.
Функция strtod возвращает значение числа с плавающей точкой, исключая случаи переполнения или потери результата (т.е. абсолютное значение результата меньше, чем это допустимо диапазоном представления числа). В случае переполнения или потери значимости результата возвращается соответственно +HUGE или -HUGE.
Функция strtol возвращает значение преобразованной строки, исключая случай переполнения или потери результата. В этом случае возвращается соответственно LONG_MAX или LONG_MIN. Обе функции устанавливают errno в ERANGE.
Пример.
#include <stdlib.h> main() { char *string, *stopstring; double x; long l; int bs; string="3.1415926This stopped it"; x=strtod (string, &stopstring); printf ("string=%s\n",string); printf ( strtod=%ld (base %d)\n", l, bs); printf (" Stopped scan at %s\n\n", stopstring); string="10110134932"; printf ("string=%s\n", string); for (bs=2; bs<=8; bs*=2) { l=strtol(string, &stopstring, bs); printf (" strtol=%ld (base %d)\n",l,bs); printf (" Stopped scan at %s\n\n",stopstring); } }
На выходе:
string = 3.1415926This stopped it strtod = 3.141593 Stopped scan at This stopped it string = 10110134932 strtol = 45 (base 2) Stopped scan at 34932 strtol = 4423 (base 4) Stopped scan at 4932 strtol = 2134108 (base 8) Stopped scan at 932